package fr.ysa.persistence.requetes.filtres.utils;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.criterion.SimpleExpression;

import fr.ysa.persistence.requetes.filtres.Filtre;



public class FiltreUtil {
	
	FiltreValueNumber filtreNumber = new FiltreValueNumber();
	
	FiltreValueString filtreString = new FiltreValueString();
	
	FiltreValueDate filtreDate = new FiltreValueDate();
	
	FiltreValueObject filtreObject = new FiltreValueObject();
		
	public String getValue(Filtre filtre) {
		String result ="";
		switch (filtre.getType()) {

		case STRING:
			result = filtreString.getValue(filtre);
			break;

		case NUMBER:
			result = filtreNumber.getValue(filtre);
			break;

		case DATE:
			result = filtreDate.getValue(filtre);
			break;
		
		case OBJECT:
			result = filtreObject.getValue(filtre);
			break;

		default:
			result = filtreString.getValue(filtre);
			break;
		}
				
		return result;
	}

	public List<SimpleExpression> getRestrictionsExpression(Filtre filtre) {
		List<SimpleExpression>  list = new ArrayList<SimpleExpression>();
		switch (filtre.getType()) {
		case STRING:
			list = filtreString.getRestrictionsExpression(filtre);
			break;

		case NUMBER:
			list = filtreNumber.getRestrictionsExpression(filtre);
			break;

		default:
			break;
		}
		return list;
	}
}
